//package com.navinfo.platform;
//
//import com.navinfo.platform.roadnetwork.dto.RoadNetWorkStatisticsPo;
//import org.apache.spark.sql.types.DataType;
//import org.apache.spark.sql.types.DataTypes;
//import org.apache.spark.sql.types.Metadata;
//import org.apache.spark.sql.types.StructField;
//import org.junit.Test;
//
//import java.lang.reflect.Field;
//import java.util.ArrayList;
//import java.util.List;
//
//public class GenerateRoadNewWorkSchema {
//
//    @Test
//    public void printSchema() {
//        Field[] fields = RoadNetWorkStatisticsPo.class.getDeclaredFields();
//        System.out.println("List<StructField> structFieldList = new ArrayList<>();");
//        for(Field field : fields){
//            String type = String.valueOf(field.getType());
//
//            DataType dataType;
//            switch (type){
//                case "int":
//                    dataType = DataTypes.IntegerType;
//                    break;
//                case "long":
//                    dataType = DataTypes.LongType;
//                    break;
//                case "string":
//                    dataType = DataTypes.StringType;
//                    break;
//                case "timestamp":
//                    dataType = DataTypes.TimestampType;
//                    break;
//                default:
//                    dataType = DataTypes.StringType;
//                    break;
//            }
//            System.out.println("structFieldList.add(new StructField(\"" + FieldNameUtils.underscoreName(field.getName()) + "\", " + dataType + ", true, Metadata.empty()));");
//        }
//    }
//
//    @Test
//    public void printHiveSQL(){
//        Field[] fields = RoadNetWorkStatisticsPo.class.getDeclaredFields();
//        System.out.println("create table roadnetwork_statistics(");
//        for(Field field : fields){
//            String type = String.valueOf(field.getType());
//            String fieldName = FieldNameUtils.underscoreName(field.getName());
//            DataType dataType;
//            switch (type){
//                case "int":
//                    dataType = DataTypes.IntegerType;
//                    break;
//                case "long":
//                    dataType = DataTypes.LongType;
//                    break;
//                case "string":
//                    dataType = DataTypes.StringType;
//                    break;
//                case "timestamp":
//                    dataType = DataTypes.TimestampType;
//                    break;
//                default:
//                    dataType = DataTypes.StringType;
//                    break;
//            }
//            System.out.println(fieldName + " " + dataType.sql().toLowerCase() + ",");
//        }
//        System.out.println("pdt string");
//        System.out.println(")");
//        System.out.println("comment '基于路网数据统计天表'");
//        System.out.println("partitioned by (pdt string comment '分区时间')");
//        System.out.println("stored as orc TBLPROPERTIES('orc.compression'='SNAPPY');");
//    }
//}
